package com.ruoyi.waybill.service;

import java.util.Date;
import java.util.List;
import com.ruoyi.waybill.domain.TWayBillInfo;

/**
 * 运单信息Service接口
 * 
 * @author wzy
 * @date 2024-12-31 19:09:03
 */
public interface ITWayBillInfoService 
{
    /**
     * 查询运单信息
     * 
     * @param wayBillId 运单信息主键
     * @return 运单信息
     */
    public TWayBillInfo selectTWayBillInfoByWayBillId(Long wayBillId);

    /**
     * 查询运单信息列表
     * 
     * @param tWayBillInfo 运单信息
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoList(TWayBillInfo tWayBillInfo);

    /**
     * 新增运单信息
     * 
     * @param tWayBillInfo 运单信息
     * @return 结果
     */
    public int insertTWayBillInfo(TWayBillInfo tWayBillInfo);

    /**
     * 修改运单信息
     * 
     * @param tWayBillInfo 运单信息
     * @return 结果
     */
    public int updateTWayBillInfo(TWayBillInfo tWayBillInfo);

    /**
     * 批量删除运单信息
     * 
     * @param wayBillIds 需要删除的运单信息主键集合
     * @return 结果
     */
    public int deleteTWayBillInfoByWayBillIds(Long[] wayBillIds);

    /**
     * 删除运单信息信息
     * 
     * @param wayBillId 运单信息主键
     * @return 结果
     */
    public int deleteTWayBillInfoByWayBillId(Long wayBillId);

    /**
     * 查询运单信息
     *
     * @param waybillNumber 运单信息主键
     * @return 运单信息
     */
    public TWayBillInfo selectTWayBillInfoByWayBillNumber(String waybillNumber);

    /**
     * 修改运单信息
     *
     * @param tWayBillInfo 运单信息
     * @return 结果
     */
    public int updateTWayBillInfoByWayBillNumber(TWayBillInfo tWayBillInfo);

    /**
     * 车牌号码列表
     *
     * @param vehicleMark 车辆标记
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 结果
     */
    public List<String> selectProfitStatisticFieldByRecordDate(String vehicleMark, Date beginDate, Date endDate);

    /**
     * 查询运单信息列表
     *
     * @param vehicleLicenseNumber 车牌号码
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoUsedByProfitStatistic(String vehicleLicenseNumber, Date beginDate, Date endDate);

    /**
     * 查询运单信息列表，月利润单统计
     *
     * @param profitBillId 利润单ID
     * @param tWayBillInfo 运单信息
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoByMonthProfitBillId(Long profitBillId, TWayBillInfo tWayBillInfo);

    /**
     * 批量签收运单
     *
     * @param wayBillIds 需要签收的运单信息主键集合
     * @param tWayBillInfo 运单信息
     * @return 结果
     */
    public int updateTWayBillInfoSignRelFieldsByWaybillIds(Long[] wayBillIds, TWayBillInfo tWayBillInfo);

    /**
     * 查询运单信息列表
     *
     * @param wayBillIds 需要查询的运单信息主键集合
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoListByWayBillIds(Long[] wayBillIds);

    /**
     * 查询计划单号
     *
     * @param wayBillIds 需要查询的运单信息主键集合
     * @return 计划单号集合
     */
    public List<String> selectTransportPlanNumberByWayBillIds(Long[] wayBillIds);

    /**
     * 查询运单信息列表,查询，去程，回程运单，一对
     *
     * @param tWayBillInfo 运单信息
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoListExt(TWayBillInfo tWayBillInfo);

    /**
     * 计算运单个数
     *
     * @param waybillNumber 运单信息主键
     * @return 运单信息
     */
    public int countTWayBillInfoByWayBillNumber(String waybillNumber);

    /**
     * 删除运单信息信息
     *
     * @param waybillNumber 运单信息主键
     * @return 结果
     */
    public int deleteTWayBillInfoByWayBillNumber(String waybillNumber);

    /**
     * 校验运单编号是否唯一
     *
     * @param tWayBillInfo 运单信息
     * @return 结果
     */
    public String checkWayBillNumberUnique(TWayBillInfo tWayBillInfo);

    /**
     * 司机姓名列表
     *
     * @param vehicleMark 车辆标记
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 结果
     */
    public List<String> selectSalaryStatisticFieldByRecordDate(String vehicleMark, Date beginDate, Date endDate);

    /**
     * 查询运单信息列表
     *
     * @param driverName 司机姓名
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoUsedBySalaryStatistic(String driverName, Date beginDate, Date endDate);

    /**
     * 查询运单信息列表，月工资单统计
     *
     * @param salaryBillId 利润单ID
     * @param tWayBillInfo 运单信息
     * @return 运单信息集合
     */
    public List<TWayBillInfo> selectTWayBillInfoByMonthSalaryBillId(Long salaryBillId, TWayBillInfo tWayBillInfo);
}
